package com.lechi.web.system.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * 监测数据对象 iot_monitor_data
 *
 * @author yangguang
 */
@Data
public class IotMonitorDataBo {
    /**
     * 动态设备表名，值为设备序列号
     */
    private String tableName;

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 所属仪器的ID号
     */
    private Long deviceId;

    /**
     * 所属传感器的 观测要素ID号
     */

    private Long sensorAliasId;

    /**
     * 所属传感器别名
     */
    private String sensorAliasName;

    /**
     * 数据时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date dateTime;

    /**
     * 所属传感器质控码
     */
    private String qualityCode;

    /**
     * 入库浮点型实时数据
     */
    private Float value;

    /**
     * 页面显示实时数据
     */
    private String doubleValue;

    /**
     * 字符串型实时数据
     */
    private String stringValue;

    /**
     * 小数位数，0表示整数，1表示1位小数 对应数据库字段：sensorDigit
     */
    private Integer sensorDigit;

    /**
     * 是否告警
     */

    private Boolean ifAlarm = false;

    /**
     * 单位
     */
    private String unit;

    public IotMonitorDataBo setDeviceId(Long deviceId) {
        this.deviceId = deviceId;
        return this;
    }

    public IotMonitorDataBo setSensorAliasId(Long sensorAliasId) {
        this.sensorAliasId = sensorAliasId;
        return this;
    }

    public IotMonitorDataBo setDateTime(Date dateTime) {
        this.dateTime = dateTime;
        return this;
    }

    public IotMonitorDataBo setQualityCode(String qualityCode) {
        this.qualityCode = qualityCode;
        return this;
    }

    public IotMonitorDataBo setValue(Float value) {
        this.value = value;
        return this;
    }

    public IotMonitorDataBo setDoubleValue(String doubleValue) {
        this.doubleValue = doubleValue;
        return this;
    }

    public IotMonitorDataBo setStringValue(String stringValue) {
        this.stringValue = stringValue;
        return this;
    }

    public IotMonitorDataBo setIfAlarm(Boolean ifAlarm) {
        this.ifAlarm = ifAlarm;
        return this;
    }

    public IotMonitorDataBo setUnit(String unit) {
        this.unit = unit;
        return this;
    }

    /**
     * 请求参数
     */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private Map<String, Object> params;

    public Map<String, Object> getParams() {
        if (params == null) {
            params = new HashMap<>();
        }
        return params;
    }

    public void setParams(Map<String, Object> params) {
        this.params = params;
    }
}
